
var j = jQuery.noConflict();
j(document).ready(function() {
	pagina.inicializa();
});


// representação do dropdown:
var pagina = {
	btn_matricula: '#gerar_matricula',
	grid_resultado: '#grid_resultado',
	grid_disponibilidade: '#grid_disponibilidade',
	grid_jafiz:"#grid_jafiz",
	grid_naoquero:"#grid_naoquero",
	grid_disciplinas:"#grid_disciplinas",
	curso: "#c_curso",
	btn_limpar: "#btn_limpa",
	btn_jafiz: "#btn-jafiz",
	btn_naoquero: "#btn-naoquero",
	check_disciplina:".js-check-disciplina",
	loading: 0,
	form_disponibilidade: {
		id : '#form_diponibilidade',
		inicio: "#c_inicio",
		fim:"#c_fim",
		dia:"#c_dia",
		btn_add:"#btn_add",
		btn_remove:".btn_remove",
		horarios: new Array(),
		templateLinha:'<tr id="row_{id}"><td>{dia}</td><td>{inicio}</td><td>{fim}</td><td><a href="#" class="btn_remove">Remover</a></td></tr>',
		arr_dias : ['Domingo','Segunda','Terça','Quarta','Quinta','Sexta','Sábado'],
		arr_horarios : ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P'],
		tabela_horarios: new Array(),
		inicializa: function(){
			var self = pagina.form_disponibilidade;
			
			self.id = j(self.id);
			self.inicio = j(self.inicio);
			self.fim = j(self.fim);
			self.dia = j(self.dia);
			self.btn_add = j(self.btn_add);
			self.btn_remove = j(self.btn_remove);
			self.inicializaTabelaHorarios();
			self.registraEventos();
			pagina.form_disponibilidade = self;

		},
		inicializaTabelaHorarios:function(){
			for(var i=2;i<=7;i++){
				pagina.form_disponibilidade.tabela_horarios[i] = new Array();
				for(var j=1;j<=16;j++){
					pagina.form_disponibilidade.tabela_horarios[i][j] = false;
				}
			}
		},
		marcaHorario:function(ho){
			for(k=ho.inicio;k<=ho.fim;k++){
				pagina.form_disponibilidade.tabela_horarios[ho.dia][k] = true;
 			}
		},
		desmarcaHorario:function(ho){
			for(k=ho.inicio;k<=ho.fim;k++){
						pagina.form_disponibilidade.tabela_horarios[ho.dia][k] = false;
 			}
		},
		verificaHorario:function(dia,horario,fim){
			for(var i=horario;i<=fim;i++){
				if(pagina.form_disponibilidade.tabela_horarios[dia][i]){
					return true;
				}
				
			}
			return false;
		},
		registraEventos:function(){
			var self = pagina.form_disponibilidade;
			
			self.btn_add.click(self.eventos.clickAddHorario);

			self.btn_remove.live("click",self.eventos.clickRemoveHorario);
			
			pagina.form_disponibilidade = self;
		},
		eventos:{
			clickAddHorario:function(e){
				e.preventDefault();
				pagina.form_disponibilidade.addHorario();
			},
			clickRemoveHorario:function(e){
				j(this).unbind("click");
				e.preventDefault();
				pagina.form_disponibilidade.removeHorario(j(this));
			}
		},
		addHorario:function(){
			var self = pagina.form_disponibilidade;
			var i = parseInt(self.inicio.val());
			var f = parseInt(self.fim.val());
			var d = parseInt(self.dia.val());
			if(self.valida(i,f,d)){
				var horario = {
					dia:d,
					inicio:i,
					fim:f
				}
				var size = self.horarios.length;

				self.horarios[size] = horario;
				var newRow = self.templateLinha;
				newRow = newRow.replace("{id}",size);
				newRow = newRow.replace("{dia}",self.arr_dias[horario.dia-1]);
				newRow = newRow.replace("{inicio}",self.arr_horarios[horario.inicio-1]);
				newRow = newRow.replace("{fim}",self.arr_horarios[horario.fim-1]);
				self.marcaHorario(horario);
				
				pagina.grid_disponibilidade.append(newRow);
			}
		},
		removeHorario:function(obj){
			var self = pagina.form_disponibilidade;
			var id = obj.parent().parent().attr("id");
			var i = id.split("_")[1];
			j("#grid_disponibilidade #"+id).remove();
			self.desmarcaHorario(pagina.form_disponibilidade.horarios[i]);
			self.horarios.remove(i,1);

		},
		valida: function(i,f,d){
			if(i != "" && f != "" && d != ""){
				if(f <= i){
					alert("O horario final deve ser maior que o inicial");
					return false;
				}else{
					var s = pagina.form_disponibilidade;
					if(s.verificaHorario(d,i,f)){
						alert("Horário indisponível");
						return false;
					}else{
						return true;
					}
							
				}
			}else{
				alert("Preencha os campos corretamente");
				return false;
			}
		}
	},
	// Inicializa
	inicializa:function(){
		


		  /* Modal Ajax */
			  $("modal-ajax").addEvent("click", function(e){
			    e.stop();
			    var SM = new SimpleModal({ "width":600});


			        SM.show({
			          "model":"modal-ajax",
			          "title":"Relatorio de Acessos",
			          "param":{
			            "url":"relatorio.php",
			            "onRequestComplete": function(){ }
			          }
			        });
			  });


		pagina.btn_matricula = j(pagina.btn_matricula);
		pagina.grid_resultado = j(pagina.grid_resultado);
		pagina.grid_disponibilidade = j(pagina.grid_disponibilidade);
		pagina.curso = j(pagina.curso);
		pagina.btn_limpar = j(pagina.btn_limpar);
		
		pagina.grid_jafiz = j(pagina.grid_jafiz);
		pagina.grid_naoquero = j(pagina.grid_naoquero);
		pagina.grid_disciplinas = j(pagina.grid_disciplinas);
		pagina.btn_jafiz = j(pagina.btn_jafiz);
		pagina.btn_naoquero = j(pagina.btn_naoquero);
		pagina.form_disponibilidade.inicializa();
		j('.block').hide();
		pagina.registrarEventos();
		Array.prototype.remove = function(start, end) {
		    this.splice(start, end);
			return this;
		}
	},
	registrarEventos:function(){
		pagina.curso.bind("change",pagina.eventos.troca_curso);
		pagina.btn_matricula.click(pagina.eventos.gerar_matricula);
		pagina.btn_limpar.click(pagina.eventos.limpar_consulta);
		pagina.btn_jafiz.click(pagina.eventos.add_jafiz);
		pagina.btn_naoquero.click(pagina.eventos.add_NaoQuero);
		j('.block').bind("decreaseLoading",function(){
			pagina.loading--;
			if(pagina.loading ==0){
				pagina.block();
			}
		});
	},
	eventos:{
		gerar_matricula:function(){
			if(pagina.curso.val() != ""){
				pagina.gerarMatricula();
			}else{
				alert("Selecione um curso.");
			}
		},
		troca_curso:function(){
			if(pagina.curso.val() != ""){
				pagina.carregarGrids();
			}else{
				pagina.eventos.limpar_consulta();
			}
		},
		limpar_consulta:function(){
			pagina.limparConsulta();
		},
		add_jafiz:function(){
			pagina.jaFiz();
		},
		add_NaoQuero:function(){
			pagina.naoQuero();
		}
	},
	gerarMatricula: function(){
		pagina.loading = 4;
		pagina.block();
		pagina.textBlock("Informando disponibilidade");
		pagina.informaDispobinibilidade();
	},
	informaDispobinibilidade: function(){
		j.post('actionInformaDisponibilidade.php', {data: j.toJSON(pagina.form_disponibilidade.horarios)}, function(res){
			j('.block').trigger('decreaseLoading',['Custom', 'Event']);
			pagina.textBlock("Verificando requisitos");
			pagina.verificaRequisitos();

		});
	},
	verificaRequisitos:function(){

		j.post('actionVerificaRequisistos.php', function(res){
			j('.block').trigger('decreaseLoading',['Custom', 'Event']);
			pagina.textBlock("Verificando disponibilidade");
			pagina.verificaDisponibilidade();
			

		});
	},
	verificaDisponibilidade:function(){
		j.post('actionVerificaDisponibilidade.php', function(res){
			
			j('.block').trigger('decreaseLoading',['Custom', 'Event']);
			pagina.textBlock("Carregando resultado");
			pagina.carregaResultado();

		});
	},
	carregaResultado: function(){
		pagina.grid_resultado.load("acaoMostraResultado.php",function(){
			pagina.textBlock("");
			j('.block').trigger('decreaseLoading',['Custom', 'Event']);
		});
	},
	limparConsulta:function(){
		
		pagina.block();
		j.post('acaoLimpar.php', {data:""}, function(res){
			//var response = $.parseJSON(res);
			//if(parseInt(response.result) == 1){
			//	pagina.carregaResultado();
			//}else{
			//	alert("Selecione os horários em que estara disponível");
			//}
			pagina.block();
			window.location.reload();
		});

	},
	carregarGrids:function(){
		
		pagina.loading = 2;
		pagina.block();
		pagina.grid_disciplinas.load("acaoMostraDisciplinas.php", function(){
			
			pagina.grid_jafiz.load("acaoMostraJaFiz.php",function(){ 
				j('.block').trigger('decreaseLoading',['Custom', 'Event']);
			});
			pagina.grid_naoquero.load("acaoMostraNaoQuero.php",function(){
				j('.block').trigger('decreaseLoading',['Custom', 'Event']);
			});
		});

	},
	jaFiz:function(){
		if(pagina.curso.val() != ""){
			pagina.actionGeneric("JaFiz");
		}else{
			alert("Selecione um curso.");
		}
	},
	naoQuero: function (){
		if(pagina.curso.val() != ""){
			pagina.actionGeneric("NaoQuero");

		}else{
			alert("Selecione um curso.");
		}
		
	},
	actionGeneric: function(arq_end){
		var str = "";

		var rows_remover = new Array();
		var i = 0;
		j('input:checked.js-check-disciplina').each(function(){
			var val = j(this).val();
			str += val+"A";
			rows_remover[i] = "rows_"+val;
			i++;	
		});
		
		pagina.block();
		j.post('acao'+arq_end+'.php','str_disciplinas='+str.substring(0,str.length-1), function(res){
			
			if(arq_end == "NaoQuero" ){
				pagina.grid_naoquero.load("acaoMostra"+arq_end+".php",function(){pagina.block();});
			}else{
				pagina.grid_jafiz.load("acaoMostra"+arq_end+".php",function(){pagina.block();});
			}

			for(i=0;i<rows_remover.length;i++){
				j("#grid_disciplinas #"+rows_remover[i]).remove();
			}
		});
	},
	block:function(){
		j('.block').animate({
		    opacity:'toggle',
		    height: 'toggle'
		  }, 900, function() {
		    // Animation complete.
		  });
	},
	textBlock:function(text){
		j(".block .text .info").html(text);
	}
	
}